import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';

import 'package:sprintf/sprintf.dart';
import 'package:junyeyishu/utils/utils.dart';
import 'package:junyeyishu/widgets/QGCircleCheckWidget.dart';
import 'package:junyeyishu/widgets/QGButton.dart';

class QGOnshelfAlert extends StatefulWidget {
  Function(double price) onConfirm;
  QGOnshelfAlert({super.key, required this.onConfirm});
  @override
  State<QGOnshelfAlert> createState() => _QGOnshelfAlertState();

  static show(context, onConfirm) {
    showDialog(
        context: context,
        builder: (context) {
          return QGOnshelfAlert(onConfirm: onConfirm);
        });
  }
}

class _QGOnshelfAlertState extends State<QGOnshelfAlert> {
  bool check = true;

  var tapGes = TapGestureRecognizer();
  var controller = TextEditingController();

  double price = 0;

  @override
  void dispose() {
    tapGes.dispose();
    controller.dispose();

    super.dispose();
  }

  @override
  void initState() {
    super.initState();

    tapGes.onTap = onAgreement;

    controller.addListener(() {
      try {
        price = double.parse(controller.text);
        setState(() {});
      } catch (e) {}
    });
  }

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () {
        unfocus(context);
      },
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Container(
            margin: EdgeInsets.symmetric(horizontal: 25.rpx),
            padding: EdgeInsets.symmetric(horizontal: 20.rpx, vertical: 25.rpx),
            decoration: BoxDecoration(
              borderRadius: BorderRadius.circular(20.rpx),
              // color: const Color.fromRGBO(255, 255, 255, 0.2),
              color: Color(0xFF232A32),
            ),
            child: Column(mainAxisSize: MainAxisSize.min, children: [
              buildHeader(),
              SizedBox(height: 12.rpx),
              buildItems(),
              SizedBox(height: 18.rpx),
              buildAgreement(),
              SizedBox(height: 18.rpx),
              buildButtons(),
            ]),
          ),
        ],
      ),
    );
  }

  buildHeader() {
    return Column(
      children: [
        Text(
          '寄售金额',
          style: TextStyle(
              color: Color(0xFFffffff),
              fontSize: 16.rpx,
              fontWeight: FontWeight.bold),
        ),
        SizedBox(height: 10.rpx),
        Stack(
          children: [
            Row(
              children: [
                SizedBox(
                  width: 50,
                  child: Text(
                    '￥',
                    style: TextStyle(
                        color: Color(0xFFffffff),
                        fontSize: 16.rpx,
                        fontWeight: FontWeight.bold),
                  ),
                ),
                Expanded(
                  child: TextField(
                      textAlign: TextAlign.center,
                      controller: controller,
                      keyboardType:
                          const TextInputType.numberWithOptions(decimal: true),

                      // keyboardType: TextInputType.number,
                      textInputAction: TextInputAction.done,
                      cursorColor: Color(0xFFffffff),
                      // autofocus: phoneController.text.isEmpty,
                      style: TextStyle(
                          color: Color(0xFFffffff),
                          fontSize: 16.rpx,
                          fontWeight: FontWeight.bold),
                      decoration: InputDecoration(
                        hintText: "0",
                        hintStyle: TextStyle(color: Color(0xFF999999)), //修改颜色
                        enabledBorder: InputBorder.none,
                        focusedBorder: InputBorder.none,
                      )),
                ),
                SizedBox(width: 50.rpx),
              ],
            ),
            Positioned(
              bottom: 4.rpx,
              child: Container(
                  width: 600.rpx, height: 0.5.rpx, color: Color(0xFFEAEAEA)),
            ),
          ],
        ),
      ],
    );
  }

  buildItems() {
    var fee = sprintf("%.2f", [price * 0.05]);
    var income = sprintf("%.2f", [price * 0.95]);

    return Column(
      children: [
        buildItem("服  务  费", "寄售金额的5% $fee元"),
        SizedBox(height: 10.rpx),
        buildItem("所得金额", "$income元"),
      ],
    );
  }

  buildItem(key, value) {
    return Row(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      children: [
        Text(
          key,
          style: TextStyle(
              color: Color(0xFF989EA4),
              fontSize: 14.rpx,
              fontWeight: FontWeight.normal),
        ),
        SizedBox(width: 25.rpx),
        Expanded(
          child: Text(
            value,
            style: TextStyle(
                color: Color(0xFF989EA4),
                fontSize: 14.rpx,
                fontWeight: FontWeight.normal),
          ),
        ),
      ],
    );
  }

  buildAgreement() {
    return Row(
      crossAxisAlignment: CrossAxisAlignment.start,
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        QGCircleCheckWidget(
            size: 12.rpx,
            select: check,
            padding: EdgeInsets.only(right: 5.rpx, top: 5.rpx, bottom: 5.rpx),
            image: "login_check",
            onTap: (select) {
              check = select;
              setState(() {});
            }),
        SizedBox(width: 10.rpx),
        Expanded(
          child: RichText(
            text: TextSpan(
                text: "已阅读井同意上述价格规则及",
                style: TextStyle(color: Color(0xFF989EA4)),
                children: [
                  TextSpan(
                      recognizer: tapGes,
                      text: "《平台用户售卖服务协议》",
                      style: TextStyle(color: Color(0xFFffffff)))
                ]),
          ),
        ),
      ],
    );
  }

  buildButtons() {
    return SizedBox(
      height: 100.rpx,
      child: Column(
        children: [
          QGButton(
                  title: "确定",
                  enable: true,
                  onTap: () {
                    if (price <= 0) {
                      toast("请输入价格");
                      return;
                    }
                    unfocus(context);
                    if (!check) {
                      toast("请阅读并同意《平台用户售卖服务协议》");
                      return;
                    }

                    widget.onConfirm(price);
                  }),
                  SizedBox(height: 25.rpx),
                  GestureDetector(
                    onTap: (){
                      onCancel();
                    },
                    child:Text('取消',style: TextStyle(fontSize: 16,color: Color(0XFFFFFFFF))),
                  )
        
          // Expanded(
          //     child:
          //         QGOutlineButton(title: "取消", enable: true, onTap: onCancel)),
          // SizedBox(width: 15.rpx),
          // Expanded(
          //     child: QGButton(
          //         title: "确定",
          //         enable: true,
          //         onTap: () {
          //           if (price <= 0) {
          //             toast("请输入价格");
          //             return;
          //           }
          //           unfocus(context);
          //           if (!check) {
          //             toast("请阅读并同意《平台用户售卖服务协议》");
          //             return;
          //           }

          //           widget.onConfirm(price);
          //         })),
        ],
      ),
    );
  }

  onCancel() {
    Navigator.of(context).pop();
  }

  onAgreement() {
    var args = {
      "title": "售卖服务协议",
      "content": """
平台用户售卖服务协议
 本协议由您与海南芊格网络科技有限公司 （ 称“千格文创”)，本协议具有合同效力。本协议中协议双方合称协议方，海南芊格网络科技有限公司在本协议中以下称为千格”或“我司”或“平台
[提示条款]
1、本协议容包括协议正文与所有千格已经发布或将来可能发布的相关的规则。前述规则为本协议不可分割的组成部分与协议正文具有同等法律效力。
2、您应当在实际使用本服务之前认真阅读全部协议容，对于协议中以加粗字体显示的容，您应重点阅读。如您对本协议有任何疑问，应向平台咨询。
一、适用范围
适用于通过千格平台售卖作品的注册用户您同意:我们有权随时对千格平台进行优化和调整，发布新的版本如您必须使用新的版本时，您应选择使用新版本，或者您拒绝使用时应停止在平台的交易活动。
二、身份认证
当您登陆千格平台售卖作品时，需要先通过实名认证。
三、监督机制平台依据法律法规、本协议约定以及平台规则，有权单方决定限制您的平台活动行为，比如限制您使用平台全部或部分服务，您拒绝履行或配合时，平台有权根据本协议及平台规则采取相应措施。
四、作品售卖
1、用户可在平台登录账户后，根据平台相关规则及流程对持有的可售卖的作品进行售卖。
2、用户应遵守国家法律法规的规定，在出售作品时不侵犯他人合法权益、包括但不限于他人享有的著作权、版权、商标权、肖像权、名誉权
3、用户在发布作品时应遵守市场价格规律，不得以虚高的价格发售作品，否则平台有权对该用户作出限制售卖的管制措施。
4、您应妥善保管登录千格平台的账号、密码等保密信息。您登录账号后在千格平台中的一切操作均应符合国家法律法规、规章政策和规范性文件的规定，还应符合本协议条款和平台规则的规定，您通过账户在平台内的所有操作均被视为您的行为，由您承担全部责任。
五、平台规则
1、千格平台在现有技术实现基础上努力维护用户平台的正常稳定运行，并努力提升和改进技术，对平台功能及服务进行更新、升级，以不断提升平台性能和交易效率。如发现您有损系统安全、稳定操作的，平台有权立即停止您的服务权限，并立即删除所有有害信息、数据等;您应对此导致的一切不利后果承担全部法律责任，包括但不限于赔偿平台及第三方的损失。
2、千格平台有权单方根据国家相关法律法规、政策及平台的运营情况，对公示的平台规则进行变更，变更后的规则将以公告或系统邮件的形式告知您，任何变更一经公告即构成本协议的组成部分。您应实时关注公告内容，如不同意该变更，应及时与客服联系并立即停止使用一旦您继续使用，则视为您自愿接受变更后的规则。
3、若您存在违规、违约、侵犯第三方权益或违反法律法规等情形的，平台有权对您采取平台管控措施、暂停向您提供服务、扣除保证金、终止本协议等措施，上述措施不足以补偿不足以平台及他人造成损失的，您还应足额赔偿
4、如存在下列任何情况
(1)第三方通知千格平台，认为您或具体交易事项可能存在重大问题
(2)您或第三方告知千格平台您的交易有违法、侵权或不当行为的
(3)千格平台有理由认为您或具体交易事项可能存在违法、侵权、或重大问题。
5、千格平台以普通非专业人员的知识水平标准对相关信息、内容或行为进行判别，判断认为这些信息、内容或行为具有违法或不当性质的，平台有权根据不同情况选择删除、屏蔽相关信息、对您采取限制性措施或停止对您提供服务，并保留就您的行为平台及用户或其他权利人造成的损失进行追偿的权利。
六、费用结算
1、您在千格平台售卖作品时，平台会根据页面提示收取相应的服务费用，同时您需向发售方支付作品溢价一定比例的办税(费用标准页面提示为准)
2、您在售卖作品过程中取得的收入，您应自行承担相关税费，并自行缴纳相应的税费
七、违规及违规作品处理
1、用户在平台内发布不当信息或出现不当使用他人信息的情形
2、用户在平台使用过程中发布违禁信息，包括但不限于上传涉嫌侵权、黄暴、涉政、涉嫌非法炒作、洗钱、非法金融活动等作品。
3、用户发布作品价格时严重背离市场价格规律，出现价格虚高、盲目标价等情形。
4、若您购买的作品涉嫌违规或侵犯他人的合法权益，您同意我们会对作品采取打风险标识、限制售卖、屏蔽、隐藏等处理。您同意由此造成的损失，由您直接向作品发售方主张。
八、平台管控措施
用户违反本规范规定的，平台将依据平台规则进行处理，具体处理包括但不限于处理违规信息、用户权限管控等措施。如用户在平台内等行为涉嫌违法违规的，平台也将配合国家机关作出处理。[限制上架]用户出现违规行为的，平台将不准予其作品在主页上架销售等。[屏蔽主页]用户出现严重违规并对平台造成严重影响的行为，平台将对用户主页采取屏蔽措施。
[清退措施]用户出现严重违规、售卖涉嫌侵权、黄暴、涉政、涉嫌非法炒作、洗钱、非法金融活动等作品等行为，平台将对您的作品采取清退措施，并有权要求您退还售卖款项并承担违约责任。[限制售卖]用户出现背离价格规律、以虚高价格二次售卖等情形，平台有权限制该用户的售卖行为
九、不可抗力
不论在何种情况下，千格平台均不对由于电力、网络、电脑、通讯或其他系统的故障罢工(含内部罢工或劳工骚乱)、劳动争议、暴乱、起义、骚乱、生产力或生产资料不足、火灾、洪水、风暴、爆炸、战争.疫情影响、政府行为等不可抗力，国际、国内法院的命令或第三方的不作为而造成的不能服务或延迟服务承担责任。
十、协议终止
您应按照本协议约定使用平台的服务，并且尊重交易平台及其他权利人所享有的知识产权和其相关权利，如您严重违反本协议及其他法律法规或主管机关等规定，平台有权停止向您提供服务并将终止本协议。
十一、争议处理
1、本协议的成立、生效、履行、解释及纠纷解决，适用中华人民共和国大陆地区法律(不含冲突法)，如无相关法律规定的，则参照通用国际商业惯例和/或行业惯例。2、在履行本协议的过程中，如发生争议，应协商解决。协商不成的均提请北京仲裁委员会按照该会仲裁规则进行仲裁。仲裁裁决是终局的，对双方均有约束力。
十二、其他
1、如本协议的任何条款被视作无效或无法执行，其余部分那么仍具有法律效力。
2、我们于您过失或违约时放弃本协议约定的权利的，不得视为我们对您的其他或以后同类之过失或违约行为弃权。
3、未经千格事先书面同意，您不得将本协议项下的权利义务转让给任何第三方。
""",
    };
    Navigator.of(context).pushNamed(PageRule, arguments: args);
  }
}
